﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace LanguageInfo.Common.Utilities
{
	public static class UploadHelper
	{
		/// <summary>
		/// 上传文件，并生删除以前上传的文件preFile
		/// </summary>
		/// <param name="postedFile">上传的文件对象</param>
		/// <param name="savePath">保存绝对路径</param>
		/// <param name="preFile">要删除的文件(相对路径)，为空表示不删除</param>
		/// <returns>如果以*开头，则出错</returns>
		public static string Upload(HttpPostedFileBase postedFile, string savePath, string preFile)
		{
			return Upload(postedFile, savePath, (1024 * 2000), ".gif|.jpg|.png", preFile);
		}

		/// <summary>
		/// 上传文件，并生删除以前上传的文件preFile
		/// </summary>
		/// <param name="postedFile">上传的文件对象</param>
		/// <param name="savePath">保存绝对路径</param>
		/// <param name="maxSize">文件最大小，默认为2M</param>
		/// <param name="preFile">要删除的文件(相对路径)，为空表示不删除</param>
		/// <returns>如果以*开头，则出错</returns>
		public static string Upload(HttpPostedFileBase postedFile, string savePath, int maxSize, string preFile)
		{
			return Upload(postedFile, savePath, maxSize, ".gif|.jpg|.png", preFile);
		}

		/// <summary>
		/// 上传文件，并生删除以前上传的文件preFile
		/// </summary>
		/// <param name="postedFile">上传的文件对象</param>
		/// <param name="savePath">保存绝对路径</param>
		/// <param name="maxSize">文件最大小，默认为2M</param>
		/// <param name="allowTypes">允许的文件类型，默认为 .gif|.jpg|.png</param>
		/// <param name="preFile">要删除的文件(相对路径)，为空表示不删除</param>
		/// <returns>如果以*开头，则出错</returns>
		public static string Upload(HttpPostedFileBase postedFile, string savePath, int maxSize, 
			string allowTypes, string preFile)
		{
			UploadFile uf = new UploadFile(postedFile);
			uf.SavePath = savePath;
			uf.MaxLength = maxSize;
			uf.FileType = allowTypes;
			uf.Save();
			if (uf.ErrorCode == -1 && !string.IsNullOrEmpty(preFile))
			{
				string thumbFile;
				preFile = PathHelper.GetMapPath(preFile);
				thumbFile = "\\" + System.IO.Path.GetFileNameWithoutExtension(preFile);
				thumbFile = preFile.Replace(thumbFile, thumbFile + "_thumb");
				if (System.IO.File.Exists(preFile)) System.IO.File.Delete(preFile);
				if(System.IO.File.Exists(thumbFile)) System.IO.File.Delete(thumbFile);
			}
			if (uf.ErrorCode == -1)
				return string.Concat(PathHelper.GetUrlFromPath(uf.SavePath), uf.FileName);
			else
				return string.Concat("*", uf.ErrorMessage);
			
		}
	}
}
